/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import base.Assunto;
import base.Autor;
import base.Estoque;
import base.Obra;
import static dao.DAO.begin;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hibernate.HibernateException;
import org.hibernate.Session;

/**
 *
 * @author semente-note-1
 */
public class ObraDAO extends DAO {

    private Session session;

    public void inserir(Map<String, String> parametros) {

        try {
            begin();

            Obra obra = new Obra();
            int ObraId = Integer.valueOf(parametros.get("id"));

            obra.setTitulo(parametros.get("titulo"));
            obra.setAno(parametros.get("ano"));
            obra.setObs(parametros.get("obs"));
            obra.setIdObra(ObraId);

            Set<Assunto> assuntos = new HashSet<>();
            Set<Autor> autores = new HashSet<>();


            /*Loop to add Autor into conrrespondent HashSet*/
            for (int i = 0; i < 7; i++) {
                String currentKey = "autor" + i;
                if (parametros.containsKey(currentKey)) {
                    String autorsName = parametros.get(currentKey);
                    Autor a = new Autor(autorsName);
                    autores.add(a);
                }
            }

            /*Loop to add Assunto into conrrespondent HashSet*/
            for (int i = 0; i < 5; i++) {
                String currentKey = "assunto" + i;
                if (parametros.containsKey(currentKey)) {
                    String subject = parametros.get(currentKey);
                    Assunto a = new Assunto(subject);
                    assuntos.add(a);
                }
            }
            
            Estoque estoque = new Estoque(ObraId, 1);
            
            getSession().save(estoque);

            obra.setAssuntos(assuntos);
            obra.setAutors(autores);
            obra.setEstoque(estoque);

            getSession().save(obra);
            commit();

        } catch (NumberFormatException | HibernateException e) {
            System.out.println(e.getMessage());
            rollback();
        } finally {
            flush();
            close();
        }

    }

    public void atualziar(Map<String, String> parametros) {
    }

    public void remover(int identificador) {
    }

    public List<Obra> buscar(Map<String, String> parametros) {
        return null;
    }
}
